﻿var express = require('express');
var router = new express.Router();
var overtime_info_mdl = require('../../Module/work_overtime');
var userCtler = require('../../Controllers/checkInWOvertimeCtller');
var UserInfoCtler = require('../../Controllers/UserInfoCtller');

/**
 * 对所有/user/下的url进行登入拦截，未登入的访问进行转向
 * <必需放在需拦截的请求前>
 */
router.all('*', function (req, res, next) {
    if (req.session.user) {
        next();
    } else {
        console.log("[" + req.method + "]ori_url:" + req.originalUrl + "|url:" + req.url);
        res.redirect("/login")
    }
});

// 访问用户主页面
router.get('/', function (req, res) {
    res.render('UserInfo', { title: '加班登记' });
});

// 访问加班登记页面
router.get('/checkInDate', function (req, res) {
    res.render('mark_overtime_day', { title: '加班登记' });
});

// 请求更改后台数据库加班信息
router.post('/overtime_update', function (req, res) {
    var markDates = JSON.parse(req.body.markDates);
    var removeMarkedDates = JSON.parse(req.body.removeMarkedDates);
    userCtler.CheckInMarkDates(req.session.user, markDates, removeMarkedDates,
        function (err, data) {
            if (err) { res.send(JSON.stringify({ data: err, code: 901 })) }
            else {
                res.send(JSON.stringify({ data: "加班信息已登记成功！", code: 200 }));
            }
            res.end();
        }
    );
});

// 请求获取加班信息数据
router.post('/overtime_get', function (req, res) {
    var curr_month = JSON.parse(req.body.curr_month);
    userCtler.QueryByEmpnoMonth(
        req.session.user.employee_no,
        curr_month,
        function (err, doc) {
            if (err) {
                console.error(err);
                res.send(JSON.stringify({ data: err, code: 901 }));
                res.end();
            } else {
                if (doc) {
                    res.send(JSON.stringify({ data: doc.markDates, code: 200 }));
                    res.end();
                } else {
                    res.send(JSON.stringify({ data: "没发现已登记的加班信息!", code: 300 }));
                    res.end();
                }
            }
        }
    );
});

// 访问编辑用户基本信息页面
router.get('/EditUserInfo', function (req, res) {
    res.render('UserInfoEditor', { title: '基本信息修改', ViewMode: 'EditInfo' });
});

// 访问密码修改页面
router.get('/EditPsw', function (req, res) {
    res.render('UserInfoEditor', { title: '修改密码', ViewMode: 'EditPsw' });
});

// 请求更改用户基本信息
router.post('/edit_userinfo', function (req, res) {
    var row = JSON.parse(req.body.data);
    UserInfoCtler.EditUserInfo(row, function (err, data) {
        if (err) { res.end(JSON.stringify({ data: err, code: 901 })); }
        else {
            req.session.user = data;
            res.end(JSON.stringify({ data: data, code: 200 }))
        }
    });
});

// 请求更改登入密码
router.post('/edit_psw', function (req, res) {
    var row = JSON.parse(req.body.data);
    UserInfoCtler.EditLoginPSW(row, function (err, data) {
        if (err) { res.end(JSON.stringify({ data: err instanceof Error? err.message:err, code: 901 })); }
        else { res.end(JSON.stringify({ data: data, code: 200 })) }
    });
});

module.exports = router;